home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / progwin.zip / ABOUT1.ZIP / ABOUT1.C < prev    next >
C/C++ Source or Header  |  1991-10-22  |  2KB  |  105 lines

  1.  /*------------------------------------------
  2.      ABOUT1.C -- About Box Demo Program No. 1
  3.         (c) Charles Petzold, 1990
  4.    -------------------------------------------*/
  5.  
  6. #include <windows.h>
  7. #include "about1.h"
  8.  
  9. long FAR PASCAL WndProc (HWND, WORD, WORD, LONG);
  10.  
  11. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance,
  12.                  LPSTR lpszCmdLine, int nCmdShow)
  13.      {
  14.      static char szAppName [] = "About1";
  15.      MSG        msg;
  16.      HWND        hwnd;
  17.      WNDCLASS   wndclass;
  18.  
  19.      if (!hPrevInstance)
  20.         {
  21.         wndclass.style        = CS_HREDRAW | CS_VREDRAW;
  22.         wndclass.lpfnWndProc    = WndProc;
  23.         wndclass.cbClsExtra    = 0;
  24.         wndclass.cbWndExtra    = 0;
  25.         wndclass.hInstance    = hInstance;
  26.         wndclass.hIcon        = LoadIcon (hInstance, szAppName);
  27.         wndclass.hCursor        = LoadCursor (NULL, IDC_ARROW);
  28.         wndclass.hbrBackground    = GetStockObject (WHITE_BRUSH);
  29.         wndclass.lpszMenuName    = szAppName;
  30.         wndclass.lpszClassName    = szAppName;
  31.  
  32.         RegisterClass (&wndclass);
  33.         }
  34.  
  35.      hwnd = CreateWindow (szAppName, "About Box Demo Program",
  36.                     WS_OVERLAPPEDWINDOW,
  37.                     CW_USEDEFAULT, CW_USEDEFAULT,
  38.                     CW_USEDEFAULT, CW_USEDEFAULT,
  39.                     NULL, NULL, hInstance, NULL);
  40.  
  41.      ShowWindow (hwnd, nCmdShow);
  42.      UpdateWindow (hwnd);
  43.  
  44.      while (GetMessage (&msg, NULL, 0, 0))
  45.         {
  46.         TranslateMessage (&msg);
  47.         DispatchMessage (&msg);
  48.         }
  49.      return msg.wParam;
  50.      }
  51.  
  52.    BOOL FAR PASCAL AboutDlgProc (HWND hDlg, WORD message, WORD wParam, LONG lParam)
  53.      {
  54.      switch (message)
  55.         {
  56.         case WM_INITDIALOG:
  57.              return 0;
  58.  
  59.         case WM_COMMAND:
  60.              switch (wParam)
  61.                 {
  62.                 case IDOK:
  63.                 case IDCANCEL:
  64.                    EndDialog (hDlg, 0);
  65.                    return TRUE;
  66.                 }
  67.              break;
  68.         }
  69.      return FALSE;
  70.      }
  71.  
  72. long FAR PASCAL WndProc (HWND hwnd, WORD message, WORD wParam, LONG lParam)
  73.      {
  74.      static FARPROC   lpfnAboutDlgProc;
  75.      static HANDLE    hInstance;
  76.  
  77.      switch (message)
  78.         {
  79.         case WM_CREATE:
  80.              hInstance = ((LPCREATESTRUCT) lParam) -> hInstance;
  81.  
  82.              lpfnAboutDlgProc = MakeProcInstance (AboutDlgProc, hInstance);
  83.              return 0;
  84.  
  85.         case WM_COMMAND:
  86.              switch (wParam)
  87.                 {
  88.                 case IDM_ABOUT:
  89.                    DialogBox (hInstance, "AboutBox", hwnd,
  90.                             lpfnAboutDlgProc);
  91.                    return 0;
  92.                 }
  93.              break;
  94.  
  95.         case WM_DESTROY:
  96.              PostQuitMessage (0);
  97.              return 0;
  98.         }
  99.      return DefWindowProc (hwnd, message, wParam, lParam);
  100.      }
  101.  
  102.  
  103.  
  104.  
  105.